變數能不能在某一行使用,要看它宣告在哪裡。這個可以使用的範圍就叫做作用域。
來看看宣告在函式外的Myname。它位於程式最外層,所以後面的程式和函式都能取得它。
const Myname = "BETTY";
function showName() {
const Hello = "我的名子是";
console.log(Hello, Myname);
}
showName();

message是在showName裡宣告的,只能在這個函式裡使用。函式執行完後,如果在外面寫console.log(message),程式就會出現message is not defined,因為外層不能直接取得函式內的變數。
showName();
console.log(Hello);
let與const也會受到大括號限制:
if (true) {
const status = "進行中";
console.log(status);
}
status只能用在if的大括號裡。離開大括號後就不能再取得,因此這種範圍稱為區塊作用域。
我們之前知道了,let 和 const 是不能進行重新宣告的,但是呢!這邊我們卻能這樣
const Myname = "BETTY";
function showName() {
const Hello = "我的名子是";
const Myname = "SANS";
console.log(Hello, Myname);
}
showName();

在函式中我用完全相同的方式宣告了Myname卻不會出現問題,爾且相同的變數名稱中,就會取得內部的SANS,這是因為當在裡面的CONSOLE.LOG執行時就會去找說,他有沒有Myname這個變數,這裡沒有就在往外找,所以可以找到外層的Myname,不過呢,當裡面有宣告後,你就確實不能在同一區下再進行一次重新宣告